//
//  main.m
//  函数与方法的区别
//
//  Created by 郭志远 on 2023/11/23.
//

#import <Foundation/Foundation.h>
/*
 函数和方法的区别
 1.函数属于整个文件，方法属于某一个类 方法离开类不行
 2.函数可以直接调用，方法必须用对象或者类来调用
 注意：虽然函数属于整个文件，但是如果函数写在类的声明中会不识别
 3.不能把函数当做方法来调用，也不能把方法当做函数来调用
 
 方法的注意点：
 1.也可以只有实现没有声明
 2.方法可以只有声明没有实现，编译不会报错，运行会报错
 如果方法只有声明没有实现，那么运行会报错： reason: '+[Person demo]: unrecognized selector sent to class 0x1000080d0'

 类的注意点：
 1.类可以只有实现没有声明
 */
 
@interface Person : NSObject
//对象方法声明
- (void)test;
//类方法声明
+ (void)demo;

@end

@implementation Person
//对象方法实现
- (void)test
{
    NSLog(@"test");
}
//类方法实现
+ (void)demo
{
    NSLog(@"demo");
}
@end

//外部函数声明
extern void sum();
//内部函数声明
static void minus();
//外部函数
extern void sum()
{
    printf("sum");
}
//内部函数
static void minus()
{
    printf("minus");
}

int main(int argc, const char * argv[]) {

    [Person demo];
    return 0;
}
